/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionform;

import dao.exception.DAOConnectionException;
import dao.exception.DAOEnseignantException;
import dao.exception.DAOEtudiantException;
import dao.exception.DAOException;
import dao.exception.DAOPersonneException;
import dao.interfaces.DAOEnseignant;
import dao.interfaces.DAOEtudiant;
import static gestionform.GestionInfos.CHAMP_DATE_NAISS;
import static gestionform.GestionInfos.CHAMP_LOGIN;
import static gestionform.GestionInfos.CHAMP_NOM;
import static gestionform.GestionInfos.CHAMP_PASS;
import static gestionform.GestionInfos.CHAMP_PRENOM;
import static gestionform.GestionInfos.CHAMP_TYPE_UTILISATEUR;
import static gestionform.GestionInfos.getValeurChamp;
import gestionform.exception.ValidationCreationCompteException;
import java.sql.Date;
import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import model.Enseignant;
import model.Etudiant;
import utils.DateUtils;
import utils.DateUtilsException;
import utils.SaisieUtils;
import utils.TypeUtilisateur;

/**
 *
 * @author Paul
 */
public class GestionEnseignant extends GestionInfos {

    private DAOEnseignant daoEnseignant;

    public GestionEnseignant(DAOEnseignant daoEns) {
        this.daoEnseignant = daoEns;
    }

    public Enseignant connexionEtudiant(HttpServletRequest request) {
        /* Récupération des champs du formulaire */
        String login = getValeurChamp(request, CHAMP_LOGIN);
        String password = getValeurChamp(request, CHAMP_PASS);
        Enseignant enseignant = new Enseignant();
        try {
            enseignant = daoEnseignant.rechercheProf(login, password);
        } catch (DAOEnseignantException daoEtudEx) {
            resultat = daoEtudEx.getMessage();
        }
        return enseignant;
    }

    public void createCompte(String typeUtilisateur, HashMap<String, String> listeChamps) {
        Enseignant ens = getEnseignant(listeChamps);
        if (erreurs.isEmpty()) {
            try {
                daoEnseignant.create(ens);
                resultat = "L'enseignant " + ens.getNom() + " " + ens.getPrenom()
                        + " a bien été crée";
            } catch (DAOEnseignantException daoEnsEx) {
                resultat = daoEnsEx.getMessage();
            } catch (DAOConnectionException daocEx) {
                resultat = daocEx.getMessage();
            }
        }
    }

    private Enseignant getEnseignant(HashMap<String, String> listeChamps) {
        Enseignant ens = new Enseignant();
        for (Map.Entry<String, String> champs : listeChamps.entrySet()) {
            String idChamp = champs.getKey();
            String valueChamp = champs.getValue();
            if (CHAMP_NOM.equals(idChamp)) {
                ens.setNom(valueChamp);
            } else if (CHAMP_PRENOM.equals(idChamp)) {
                ens.setPrenom(valueChamp);
            } else if (CHAMP_DATE_NAISS.equals(idChamp)) {
                try {
                    Date convertedDateNaissance = DateUtils.getConvertedDateToSQLDate(valueChamp);
                    ens.setDatenaissance(convertedDateNaissance);
                } catch (DateUtilsException dateEx) {
                    setErreur(CHAMP_DATE_NAISS, dateEx.getMessage());
                }
            } else if (CHAMP_TYPE_UTILISATEUR.equals(idChamp)) {
                ens.setTypeUtilisateur(valueChamp);
            } else if (CHAMP_LOGIN.equals(idChamp)) {
                ens.setLogin(valueChamp);
            } else if (CHAMP_PASS.equals(idChamp)) {
                ens.setMdp(valueChamp);
            }
        }
        return ens;
    }
}
